# test01_re.py
# 编写函数count_log，传递一个日志文件的路径，返回各个IP的访问次数
# count_log('apache_log.txt')
# {'122.133.188.5': 3, '1.2.3.4': 2, '33.44.55.77': 2}

# {'122.133.188.5': 2}
# 按照行读取日志，使用search方法获取IP地址
# 判断字典中是否存在ip地址这个键，如果是第一次出现，添加到字典赋值为1
# 否则出现过，让它的值加1
# 最后返回字典

# 提前编译正则字符串
import re
def count_log(file, re_str):
    # 将IP地址的正则字符串编译为正则对象
    re_obj = re.compile(re_str)
    # 准备一个空的字典
    mydict = {}
    with open(file, mode='r') as fr:
        for line in fr.readlines():
            # 使用正则匹配出IP地址
            ip = re_obj.search(line).group()
            # 判断字典中是否存在这个键
            if ip not in mydict:
                mydict[ip] = 1
            else:
                mydict[ip] += 1
    return mydict
if __name__ == '__main__':
    # 传递IP地址的正则字符串
    print(count_log('apache_log.txt', '(\d{1,3}\.){3}\d{1,3}'))
    # 传递浏览器的正则字符串
    print(count_log('apache_log.txt', 'chrome|firefox|edge|opera'))













